import { type Map } from 'mars3d'

// props类型
export interface MMapProps {
  elementId?: string // 地图容器元素id
  toolButtons?: boolean | {
    //工具按钮显示控制
    layer?: boolean //图层按钮是否显示
    line?: boolean //矢量按钮是否显示
    question?: boolean //问题按钮是否显示
  }
}

// emit类型
export interface MapEmitType {
  (e: 'initMap', map: MapStateType['instance']): void //地图初始化完成
  (e: 'clickLayerBut', isActive?: boolean): void //工具按钮，图层按钮点击
  (e: 'clickQuestionBut', isActive?: boolean): void //工具按钮，问题按钮点击
  (e: 'clickLineBut', isActive?: boolean): void // 工具按钮，矢量按钮点击
}

// 存储Map实例以及其他信息对象类型
export interface MapStateType {
  instance?: Map //地图实例
  staticServerIP: string // 代理地址
}

// UseMMap参数类型
export interface UseMMapOptions<E, P> {
  emit: E
  props: P
  MapState: MapStateType
}

// UseMMap返回类型
export interface UseMMapExport {
  initMMap: () => void
}

// 工具按钮参数类型
export interface addToolButtonsArgs<E, P> {
  props: P
  emit: E
}
